package com.pojo.dto;

import com.alibaba.fastjson.annotation.JSONField;
import com.utility.util.DateUtils;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.NotNull;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 *  公共分页基类
 *      定义固定的几个分页参数
 * @author: hw
 * @date: 2020/12/14 16:47
 */
@Data
public class PageDto<D> {

    /**
     * 当前页
     */
    @NotNull(message = "当前页不能为空")
    private  Integer pageNum;

    /**
     * 页数
     */
    @NotNull(message = "页数不能为空")
    private Integer pageSize;

    /**
     * 查询参数
     */
    private D param;

    /**
     * 统一名称参数  如：角色名称  标题名称  用户名称
     */
    private String name;

    /**
     * 统一名称参数（备份使用 当需要2个name是使用）  如：角色名称  标题名称  用户名称
     */
    private String copyName;

    /**
     * 统一状态参数
     */
    private String status;

    /**
     * 统一开始时间  yyyy-MM-dd HH:mm:ss
     */
    @JSONField(format= DateUtils.YYYY_MM_DD_HH_MM_SS)
    @DateTimeFormat(pattern=DateUtils.YYYY_MM_DD_HH_MM_SS)
    private LocalDateTime startTime;

    /**
     * 统一结束时间  yyyy-MM-dd HH:mm:ss
     */
    @JSONField(format= DateUtils.YYYY_MM_DD_HH_MM_SS)
    @DateTimeFormat(pattern=DateUtils.YYYY_MM_DD_HH_MM_SS)
    private LocalDateTime endTime;


    /**
     * 统一开始时间  yyyy-MM-dd
     */
    @JSONField(format= DateUtils.YYYY_MM_DD)
    @DateTimeFormat(pattern=DateUtils.YYYY_MM_DD)
    private LocalDate startDate;


    /**
     * 统一结束时间  yyyy-MM-dd
     */
    @JSONField(format= DateUtils.YYYY_MM_DD)
    @DateTimeFormat(pattern=DateUtils.YYYY_MM_DD)
    private LocalDate endDate;
}
